package com.ic.controller;

import com.ic.base.BaseController;
import com.ic.base.OperatorType;
import com.ic.base.PageInfo;
import com.ic.entity.ItemInfo;
import com.ic.entity.ItemUse;
import com.ic.service.ItemInfoService;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

import javax.annotation.Resource;
import java.util.HashMap;
import java.util.Map;

/**
 * Description: 入库物品明细控制层类
 * Author: spark
 * Date  : 2017/6/30
 * Time  : 11:00.
 */
@Controller
@RequestMapping("/itemInfoController")
public class ItemInfoController extends BaseController {
	@Resource
	private ItemInfoService itemInfoService;

	/**
	 * 根据查询条件获取入库物品明细信息
	 *
	 * @param itemType 入库物品明细信息
	 * @param pageInfo 分页信息
	 * @return 返回Map
	 */
	@SuppressWarnings("unchecked")
	@RequestMapping(value = "/showItemTypeList")
	@ResponseBody
	public Map showItemInfoList(ItemInfo itemType, PageInfo pageInfo) {
		return success(itemInfoService.showItemInfoList(itemType, pageInfo), OperatorType.SELECT, null);
	}

	/**
	 * 根据物品入库明细信息ID查询物品入库明细信息
	 *
	 * @param id 物品入库明细信息ID
	 * @return 返回Map
	 */
	@SuppressWarnings("unchecked")
	@RequestMapping(value = "/showItemInfo")
	@ResponseBody
	public Map showItemInfo(String id) {
		return success(itemInfoService.showItemInfo(id), OperatorType.SELECT, null);
	}

	/**
	 * 根据入库物品明细ID更改入库物品明细状态
	 *
	 * @param ids 入库物品明细ID
	 * @return 返回Map
	 */
	@SuppressWarnings("unchecked")
	@RequestMapping(value = "/updateState")
	@ResponseBody
	public Map updateState(String ids, String state) {
		itemInfoService.updateState(ids.split(","), state);
		return success(new HashMap(), OperatorType.UPDATE, null);
	}

	/**
	 * 根据ID更新入库物品明细信息
	 *
	 * @param itemInfo 入库物品明细信息
	 * @return 返回Map
	 */
	@SuppressWarnings("unchecked")
	@RequestMapping(value = "/updateItemInfo")
	@ResponseBody
	public Map updateItemInfo(ItemInfo itemInfo) {
		itemInfoService.updateByPrimaryKeySelective(itemInfo);
		return success(new HashMap<>(), OperatorType.UPDATE, null);
	}

	/**
	 * 检查入库物品明细的编号是否已存在
	 *
	 * @param itemInfo 入库物品明细信息
	 * @return 返回Map
	 */
	@SuppressWarnings("unchecked")
	@RequestMapping(value = "/checkItemInfoNum")
	@ResponseBody
	public Map checkItemInfoNum(ItemInfo itemInfo) {
		return success(itemInfoService.checkItemInfoNum(itemInfo), OperatorType.SELECT, null);
	}

	/**
	 * 新增出库信息
	 *
	 * @param itemUse 出库信息
	 * @return 返回Map
	 */
	@SuppressWarnings("unchecked")
	@RequestMapping(value = "/addItemUseInfo")
	@ResponseBody
	public Map addItemUseInfo(ItemUse itemUse) {
		itemInfoService.addItemUseInfo(itemUse);
		return success(new HashMap<>(), OperatorType.UPDATE, null);
	}

	/**
	 * 查看出库物品信息
	 *
	 * @param itemInfo 出库物品信息
	 * @return 返回Map
	 */
	@SuppressWarnings("unchecked")
	@RequestMapping(value = "/showItemUse")
	@ResponseBody
	public Map showItemUse(ItemInfo itemInfo) {
		return success(itemInfoService.showItemUse(itemInfo), OperatorType.SELECT, null);
	}

	/**
	 * 更新入库物品信息
	 *
	 * @param itemUse 物品领用信息
	 */
	@SuppressWarnings("unchecked")
	@RequestMapping(value = "/updateItemUseInfo")
	@ResponseBody
	public Map updateItemUseInfo(ItemUse itemUse) {
		itemInfoService.updateItemUse(itemUse);
		return success(new HashMap<>(), OperatorType.UPDATE, null);
	}

	/**
	 * 根据物品ID查询物品明细及领用信息
	 *
	 * @param itemInfoId 物品ID
	 * @return 返回Map
	 */
	@SuppressWarnings("unchecked")
	@RequestMapping(value = "/showItemInfoWithItemUse")
	@ResponseBody
	public Map showItemInfoWithItemUse(String itemInfoId) {
		return success(itemInfoService.showItemInfoWithItemUse(itemInfoId), OperatorType.SELECT, null);
	}

}
